<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: ArPTZ Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.4</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classArPTZ.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classArPTZ-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ArPTZ Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="group__OptionalClasses.html">Optional Classes</a> &#124; <a class="el" href="group__DeviceClasses.html">Device Interface Classes</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Base class which handles the PTZ cameras.  
 <a href="classArPTZ.html#details">More...</a></p>

<p><code>#include &lt;ArPTZ.h&gt;</code></p>

<p>Inherited by <a class="el" href="classArAMPTU.html">ArAMPTU</a>, <a class="el" href="classArDPPTU.html">ArDPPTU</a>, <a class="el" href="classArRVisionPTZ.html">ArRVisionPTZ</a>, <a class="el" href="classArSonyPTZ.html">ArSonyPTZ</a>, and <a class="el" href="classArVCC4.html">ArVCC4</a>.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a6cf3bdfcadf28cd9f2bbf90d8139ab55"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a6cf3bdfcadf28cd9f2bbf90d8139ab55">ArPTZ</a> (<a class="el" href="classArRobot.html">ArRobot</a> *robot)</td></tr>
<tr class="separator:a6cf3bdfcadf28cd9f2bbf90d8139ab55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4ca5b3e1be2ee119d15f65fe68a5888"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4ca5b3e1be2ee119d15f65fe68a5888"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ab4ca5b3e1be2ee119d15f65fe68a5888">canGetFOV</a> (void)</td></tr>
<tr class="memdesc:ab4ca5b3e1be2ee119d15f65fe68a5888"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether we can get the FOV (field of view) or not. <br /></td></tr>
<tr class="separator:ab4ca5b3e1be2ee119d15f65fe68a5888"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dc961e4c30c2bb0416738aeadbe91f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9dc961e4c30c2bb0416738aeadbe91f5"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a9dc961e4c30c2bb0416738aeadbe91f5">canGetRealPanTilt</a> (void) const </td></tr>
<tr class="memdesc:a9dc961e4c30c2bb0416738aeadbe91f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether <a class="el" href="classArPTZ.html#a9d76370937c1cb2170e7a07a0157d949" title="The angle the camera is panned to (or last commanded value sent, if unable to obtain real pan positio...">getPan()</a> hand <a class="el" href="classArPTZ.html#ae9f4ff90958537f6bdc095e9ed12ebe6" title="The angle the camera is tilted to (or last commanded value sent, if unable to obtain real pan positio...">getTilt()</a> return the device's real position, or last commanded position. <br /></td></tr>
<tr class="separator:a9dc961e4c30c2bb0416738aeadbe91f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55319bacfbe4957906921e8adc91931d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55319bacfbe4957906921e8adc91931d"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a55319bacfbe4957906921e8adc91931d">canGetRealZoom</a> (void) const </td></tr>
<tr class="memdesc:a55319bacfbe4957906921e8adc91931d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether <a class="el" href="classArPTZ.html#a3fa77b2691a7cd7ae9f823ba9271a33a" title="The amount the camera is zoomed to (or last commanded value sent, if unable to obtain real pan positi...">getZoom()</a> returns the device's real zoom amount, or last commanded zoom position. <br /></td></tr>
<tr class="separator:a55319bacfbe4957906921e8adc91931d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03c8f1ea4c5b669613a40db7b68d9a3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03c8f1ea4c5b669613a40db7b68d9a3e"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a03c8f1ea4c5b669613a40db7b68d9a3e">canPanTiltSlew</a> ()</td></tr>
<tr class="memdesc:a03c8f1ea4c5b669613a40db7b68d9a3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Can pan and tilt speed (slew rates) be set to move device? <br /></td></tr>
<tr class="separator:a03c8f1ea4c5b669613a40db7b68d9a3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a119236ee8a07d43f7fb0b3fe00e6d9b9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a119236ee8a07d43f7fb0b3fe00e6d9b9"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a119236ee8a07d43f7fb0b3fe00e6d9b9">canSetFocus</a> (void) const </td></tr>
<tr class="memdesc:a119236ee8a07d43f7fb0b3fe00e6d9b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the driver can set the focus on the camera, or not. <br /></td></tr>
<tr class="separator:a119236ee8a07d43f7fb0b3fe00e6d9b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32a5b100581efdb0d9c3d014bf1bd01e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32a5b100581efdb0d9c3d014bf1bd01e"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a32a5b100581efdb0d9c3d014bf1bd01e">canSetGain</a> (void) const </td></tr>
<tr class="memdesc:a32a5b100581efdb0d9c3d014bf1bd01e"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the driver can set gain on the camera, or not. <br /></td></tr>
<tr class="separator:a32a5b100581efdb0d9c3d014bf1bd01e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47b5b46bcd96a1e353e975823ee699cf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a47b5b46bcd96a1e353e975823ee699cf">canSetSpeed</a> ()</td></tr>
<tr class="memdesc:a47b5b46bcd96a1e353e975823ee699cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Can pan and tilt speed (slew rates) be set to move device?  <a href="#a47b5b46bcd96a1e353e975823ee699cf">More...</a><br /></td></tr>
<tr class="separator:a47b5b46bcd96a1e353e975823ee699cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26898283fecc9536d90b819fc751d410"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26898283fecc9536d90b819fc751d410"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a26898283fecc9536d90b819fc751d410">canZoom</a> (void) const =0</td></tr>
<tr class="memdesc:a26898283fecc9536d90b819fc751d410"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if camera can zoom and this class can control the zoom amount. <br /></td></tr>
<tr class="separator:a26898283fecc9536d90b819fc751d410"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adef045e90f521a77f9bfc2d99e3a95d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adef045e90f521a77f9bfc2d99e3a95d0"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#adef045e90f521a77f9bfc2d99e3a95d0">connectHandler</a> (void)</td></tr>
<tr class="memdesc:adef045e90f521a77f9bfc2d99e3a95d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal, attached to robot, inits the camera when robot connects. <br /></td></tr>
<tr class="separator:adef045e90f521a77f9bfc2d99e3a95d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0877c07c65573657b4d24866611802e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0877c07c65573657b4d24866611802e5"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a0877c07c65573657b4d24866611802e5">getAuxPort</a> (void)</td></tr>
<tr class="memdesc:a0877c07c65573657b4d24866611802e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the port the device is set to communicate on. <br /></td></tr>
<tr class="separator:a0877c07c65573657b4d24866611802e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2e327ae16f4d1acacdbafad884db46c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2e327ae16f4d1acacdbafad884db46c"></a>
virtual <a class="el" href="classArDeviceConnection.html">ArDeviceConnection</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ad2e327ae16f4d1acacdbafad884db46c">getDeviceConnection</a> (void)</td></tr>
<tr class="memdesc:ad2e327ae16f4d1acacdbafad884db46c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the device connection used by this PTZ camera. <br /></td></tr>
<tr class="separator:ad2e327ae16f4d1acacdbafad884db46c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13b9d4b3baa22e9b6801d01cc5737075"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13b9d4b3baa22e9b6801d01cc5737075"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a13b9d4b3baa22e9b6801d01cc5737075">getFocus</a> (double focus) const </td></tr>
<tr class="memdesc:a13b9d4b3baa22e9b6801d01cc5737075"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the focus the camera is set to. 0 if not supported. <br /></td></tr>
<tr class="separator:a13b9d4b3baa22e9b6801d01cc5737075"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab36cb8cbef420550ab48d68775ed3f83"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab36cb8cbef420550ab48d68775ed3f83"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ab36cb8cbef420550ab48d68775ed3f83">getFOVAtMaxZoom</a> (void)</td></tr>
<tr class="memdesc:ab36cb8cbef420550ab48d68775ed3f83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the field of view at maximum zoom. <br /></td></tr>
<tr class="separator:ab36cb8cbef420550ab48d68775ed3f83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2aaa084407e91a58c762f3576516843"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2aaa084407e91a58c762f3576516843"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#aa2aaa084407e91a58c762f3576516843">getFOVAtMinZoom</a> (void)</td></tr>
<tr class="memdesc:aa2aaa084407e91a58c762f3576516843"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the field of view at minimum zoom. <br /></td></tr>
<tr class="separator:aa2aaa084407e91a58c762f3576516843"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acab19a3e31eba42189b640f594ea94f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acab19a3e31eba42189b640f594ea94f1"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#acab19a3e31eba42189b640f594ea94f1">getGain</a> (double gain) const </td></tr>
<tr class="memdesc:acab19a3e31eba42189b640f594ea94f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the gain the camera is set to. 0 if not supported. <br /></td></tr>
<tr class="separator:acab19a3e31eba42189b640f594ea94f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e0225d1ea1e322e0753f07665d7b34d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e0225d1ea1e322e0753f07665d7b34d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a7e0225d1ea1e322e0753f07665d7b34d">getInverted</a> ()</td></tr>
<tr class="memdesc:a7e0225d1ea1e322e0753f07665d7b34d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get whether the camera is inverted (upside down). If true, pan and tilt axes will be reversed. <br /></td></tr>
<tr class="separator:a7e0225d1ea1e322e0753f07665d7b34d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4dcefee2f9373bc949e9e205fbc7a505"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4dcefee2f9373bc949e9e205fbc7a505"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a4dcefee2f9373bc949e9e205fbc7a505">getMaxNegPan</a> (void) const </td></tr>
<tr class="memdesc:a4dcefee2f9373bc949e9e205fbc7a505"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the lowest negative degree the camera can pan to (inverted if camera is inverted) <br /></td></tr>
<tr class="separator:a4dcefee2f9373bc949e9e205fbc7a505"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a389a3eb3ea39bd8f3cc706afb6e576d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a389a3eb3ea39bd8f3cc706afb6e576d3"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a389a3eb3ea39bd8f3cc706afb6e576d3">getMaxNegTilt</a> (void) const </td></tr>
<tr class="memdesc:a389a3eb3ea39bd8f3cc706afb6e576d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the lowest negative degree the camera can tilt to (inverted if camera is inverted) <br /></td></tr>
<tr class="separator:a389a3eb3ea39bd8f3cc706afb6e576d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a470a9501a6b9aa9a984f58dab7481449"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a470a9501a6b9aa9a984f58dab7481449">getMaxPan</a> () const </td></tr>
<tr class="memdesc:a470a9501a6b9aa9a984f58dab7481449"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the highest positive degree the camera can pan to (inverted if camera is inverted)  <a href="#a470a9501a6b9aa9a984f58dab7481449">More...</a><br /></td></tr>
<tr class="separator:a470a9501a6b9aa9a984f58dab7481449"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a165f84a26b141ed27ad7273d7e0d4743"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a165f84a26b141ed27ad7273d7e0d4743"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a165f84a26b141ed27ad7273d7e0d4743">getMaxPanSpeed</a> ()</td></tr>
<tr class="memdesc:a165f84a26b141ed27ad7273d7e0d4743"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum pan speed (slew rate) (degrees/sec) if device supports, or 0 if not. <br /></td></tr>
<tr class="separator:a165f84a26b141ed27ad7273d7e0d4743"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f3c4f0c3f0950c892e605ffec34bc86"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f3c4f0c3f0950c892e605ffec34bc86"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a1f3c4f0c3f0950c892e605ffec34bc86">getMaxPosPan</a> (void) const </td></tr>
<tr class="memdesc:a1f3c4f0c3f0950c892e605ffec34bc86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the highest positive degree the camera can pan to (inverted if camera is inverted) <br /></td></tr>
<tr class="separator:a1f3c4f0c3f0950c892e605ffec34bc86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf6fb70e256999e62aa5c001f4a59596"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf6fb70e256999e62aa5c001f4a59596"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#adf6fb70e256999e62aa5c001f4a59596">getMaxPosTilt</a> (void) const </td></tr>
<tr class="memdesc:adf6fb70e256999e62aa5c001f4a59596"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the highest positive degree the camera can tilt to (inverted if camera is inverted) <br /></td></tr>
<tr class="separator:adf6fb70e256999e62aa5c001f4a59596"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23a54d4c5334f7dfde331e91e389f093"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a23a54d4c5334f7dfde331e91e389f093">getMaxTilt</a> () const </td></tr>
<tr class="memdesc:a23a54d4c5334f7dfde331e91e389f093"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the highest positive degree the camera can tilt to (inverted if camera is inverted)  <a href="#a23a54d4c5334f7dfde331e91e389f093">More...</a><br /></td></tr>
<tr class="separator:a23a54d4c5334f7dfde331e91e389f093"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af252b272fbee5828d95b801a2df8575d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af252b272fbee5828d95b801a2df8575d"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#af252b272fbee5828d95b801a2df8575d">getMaxTiltSpeed</a> ()</td></tr>
<tr class="memdesc:af252b272fbee5828d95b801a2df8575d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum tilt speed (slew rate) (degrees/sec) if device supports it, or 0 if not. <br /></td></tr>
<tr class="separator:af252b272fbee5828d95b801a2df8575d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbe4dd5593dc638005a7c0dfbdd5de37"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbe4dd5593dc638005a7c0dfbdd5de37"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#adbe4dd5593dc638005a7c0dfbdd5de37">getMaxZoom</a> (void) const </td></tr>
<tr class="memdesc:adbe4dd5593dc638005a7c0dfbdd5de37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the maximum value for the zoom on this camera. <br /></td></tr>
<tr class="separator:adbe4dd5593dc638005a7c0dfbdd5de37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5e9a1c0a7e31c002c40440475997250"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#af5e9a1c0a7e31c002c40440475997250">getMinPan</a> () const </td></tr>
<tr class="memdesc:af5e9a1c0a7e31c002c40440475997250"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the lowest negative degree the camera can pan to (inverted if camera is inverted)  <a href="#af5e9a1c0a7e31c002c40440475997250">More...</a><br /></td></tr>
<tr class="separator:af5e9a1c0a7e31c002c40440475997250"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3158b7894920926b3cbaf2e89d62d82"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ad3158b7894920926b3cbaf2e89d62d82">getMinTilt</a> () const </td></tr>
<tr class="memdesc:ad3158b7894920926b3cbaf2e89d62d82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the lowest negative degree the camera can tilt to (inverted if camera is inverted)  <a href="#ad3158b7894920926b3cbaf2e89d62d82">More...</a><br /></td></tr>
<tr class="separator:ad3158b7894920926b3cbaf2e89d62d82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae89a0e1f2458e59625c4849944b0c8ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae89a0e1f2458e59625c4849944b0c8ca"></a>
virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ae89a0e1f2458e59625c4849944b0c8ca">getMinZoom</a> (void) const </td></tr>
<tr class="memdesc:ae89a0e1f2458e59625c4849944b0c8ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the lowest value for the zoom on this camera. <br /></td></tr>
<tr class="separator:ae89a0e1f2458e59625c4849944b0c8ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d76370937c1cb2170e7a07a0157d949"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a9d76370937c1cb2170e7a07a0157d949">getPan</a> (void) const </td></tr>
<tr class="memdesc:a9d76370937c1cb2170e7a07a0157d949"><td class="mdescLeft">&#160;</td><td class="mdescRight">The angle the camera is panned to (or last commanded value sent, if unable to obtain real pan position)  <a href="#a9d76370937c1cb2170e7a07a0157d949">More...</a><br /></td></tr>
<tr class="separator:a9d76370937c1cb2170e7a07a0157d949"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a710d7180edd16a2ce3f86fa258daff68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a710d7180edd16a2ce3f86fa258daff68"></a>
<a class="el" href="classArRobot.html">ArRobot</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a710d7180edd16a2ce3f86fa258daff68">getRobot</a> ()</td></tr>
<tr class="memdesc:a710d7180edd16a2ce3f86fa258daff68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> object this PTZ is associated with. May be NULL. <br /></td></tr>
<tr class="separator:a710d7180edd16a2ce3f86fa258daff68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9f4ff90958537f6bdc095e9ed12ebe6"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ae9f4ff90958537f6bdc095e9ed12ebe6">getTilt</a> (void) const </td></tr>
<tr class="memdesc:ae9f4ff90958537f6bdc095e9ed12ebe6"><td class="mdescLeft">&#160;</td><td class="mdescRight">The angle the camera is tilted to (or last commanded value sent, if unable to obtain real pan position)  <a href="#ae9f4ff90958537f6bdc095e9ed12ebe6">More...</a><br /></td></tr>
<tr class="separator:ae9f4ff90958537f6bdc095e9ed12ebe6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b638f8a180e0b66ae52b9b1ef949f42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b638f8a180e0b66ae52b9b1ef949f42"></a>
virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a1b638f8a180e0b66ae52b9b1ef949f42">getTypeName</a> ()=0</td></tr>
<tr class="memdesc:a1b638f8a180e0b66ae52b9b1ef949f42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return name of this PTZ type. <br /></td></tr>
<tr class="separator:a1b638f8a180e0b66ae52b9b1ef949f42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fa77b2691a7cd7ae9f823ba9271a33a"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a3fa77b2691a7cd7ae9f823ba9271a33a">getZoom</a> (void) const </td></tr>
<tr class="memdesc:a3fa77b2691a7cd7ae9f823ba9271a33a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The amount the camera is zoomed to (or last commanded value sent, if unable to obtain real pan position)  <a href="#a3fa77b2691a7cd7ae9f823ba9271a33a">More...</a><br /></td></tr>
<tr class="separator:a3fa77b2691a7cd7ae9f823ba9271a33a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5999b31048e3e9dce664c5dcea6c6469"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5999b31048e3e9dce664c5dcea6c6469"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a5999b31048e3e9dce664c5dcea6c6469">haltPanTilt</a> ()</td></tr>
<tr class="memdesc:a5999b31048e3e9dce664c5dcea6c6469"><td class="mdescLeft">&#160;</td><td class="mdescRight">Halt any pan/tilt movement, if device supports it. <br /></td></tr>
<tr class="separator:a5999b31048e3e9dce664c5dcea6c6469"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b16aaf1b7dc7c879a4a17eda28f88fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b16aaf1b7dc7c879a4a17eda28f88fb"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a6b16aaf1b7dc7c879a4a17eda28f88fb">haltZoom</a> ()</td></tr>
<tr class="memdesc:a6b16aaf1b7dc7c879a4a17eda28f88fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Halt any zoom movement, if device supports that. <br /></td></tr>
<tr class="separator:a6b16aaf1b7dc7c879a4a17eda28f88fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc51dbc6919fc6cde0e04985246c6a61"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc51dbc6919fc6cde0e04985246c6a61"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#adc51dbc6919fc6cde0e04985246c6a61">init</a> (void)=0</td></tr>
<tr class="memdesc:adc51dbc6919fc6cde0e04985246c6a61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the camera. <br /></td></tr>
<tr class="separator:adc51dbc6919fc6cde0e04985246c6a61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5080255e0f228a996b264c2c6e01906f"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a5080255e0f228a996b264c2c6e01906f">packetHandler</a> (<a class="el" href="classArBasePacket.html">ArBasePacket</a> *packet)</td></tr>
<tr class="memdesc:a5080255e0f228a996b264c2c6e01906f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles a packet that was read from the device.  <a href="#a5080255e0f228a996b264c2c6e01906f">More...</a><br /></td></tr>
<tr class="separator:a5080255e0f228a996b264c2c6e01906f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a284e5582d1b05baa961463c8a8198de3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a284e5582d1b05baa961463c8a8198de3"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a284e5582d1b05baa961463c8a8198de3">pan</a> (double degrees)</td></tr>
<tr class="memdesc:a284e5582d1b05baa961463c8a8198de3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pans to the given degrees. 0 is straight ahead, - is to the left, + to the right. <br /></td></tr>
<tr class="separator:a284e5582d1b05baa961463c8a8198de3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a961a03bbd153b3361a711ef18c52513e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a961a03bbd153b3361a711ef18c52513e"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a961a03bbd153b3361a711ef18c52513e">panRel</a> (double degrees)</td></tr>
<tr class="memdesc:a961a03bbd153b3361a711ef18c52513e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pans relative to current position by given degrees. <br /></td></tr>
<tr class="separator:a961a03bbd153b3361a711ef18c52513e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ed7ad95d451edc2dc38385132daeee6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ed7ad95d451edc2dc38385132daeee6"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a0ed7ad95d451edc2dc38385132daeee6">panSlew</a> (double s)</td></tr>
<tr class="memdesc:a0ed7ad95d451edc2dc38385132daeee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set pan slew rate (speed) (degrees/sec) if device supports it (see <a class="el" href="classArPTZ.html#a03c8f1ea4c5b669613a40db7b68d9a3e" title="Can pan and tilt speed (slew rates) be set to move device? ">canPanTiltSlew()</a>) <br /></td></tr>
<tr class="separator:a0ed7ad95d451edc2dc38385132daeee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a451b080c77f0b6a1104db1752f48bece"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a451b080c77f0b6a1104db1752f48bece"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a451b080c77f0b6a1104db1752f48bece">panTilt</a> (double degreesPan, double degreesTilt)</td></tr>
<tr class="memdesc:a451b080c77f0b6a1104db1752f48bece"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pans and tilts to the given degrees. <br /></td></tr>
<tr class="separator:a451b080c77f0b6a1104db1752f48bece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6036f53a3305e6f0e84025b693057439"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6036f53a3305e6f0e84025b693057439"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a6036f53a3305e6f0e84025b693057439">panTiltRel</a> (double degreesPan, double degreesTilt)</td></tr>
<tr class="memdesc:a6036f53a3305e6f0e84025b693057439"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pans and tilts relatives to the current position by the given degrees. <br /></td></tr>
<tr class="separator:a6036f53a3305e6f0e84025b693057439"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8060077b590db3d0f129143798ec953"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classArBasePacket.html">ArBasePacket</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#aa8060077b590db3d0f129143798ec953">readPacket</a> (void)</td></tr>
<tr class="memdesc:aa8060077b590db3d0f129143798ec953"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads a packet from the device connection, MUST NOT BLOCK.  <a href="#aa8060077b590db3d0f129143798ec953">More...</a><br /></td></tr>
<tr class="separator:aa8060077b590db3d0f129143798ec953"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b4a5e0245ea974434fac47e07b32be8"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a5b4a5e0245ea974434fac47e07b32be8">reset</a> (void)</td></tr>
<tr class="memdesc:a5b4a5e0245ea974434fac47e07b32be8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the camera.  <a href="#a5b4a5e0245ea974434fac47e07b32be8">More...</a><br /></td></tr>
<tr class="separator:a5b4a5e0245ea974434fac47e07b32be8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa03afae5d2ce2928d8be9e093cf444a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#aaa03afae5d2ce2928d8be9e093cf444a">robotPacketHandler</a> (<a class="el" href="classArRobotPacket.html">ArRobotPacket</a> *packet)</td></tr>
<tr class="memdesc:aaa03afae5d2ce2928d8be9e093cf444a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles a packet that was read by the robot.  <a href="#aaa03afae5d2ce2928d8be9e093cf444a">More...</a><br /></td></tr>
<tr class="separator:aaa03afae5d2ce2928d8be9e093cf444a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af54c78e35932bbbdbf3a13b55248ebf3"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#af54c78e35932bbbdbf3a13b55248ebf3">sendPacket</a> (<a class="el" href="classArBasePacket.html">ArBasePacket</a> *packet)</td></tr>
<tr class="memdesc:af54c78e35932bbbdbf3a13b55248ebf3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a given packet to the camera (via robot or serial port, depending)  <a href="#af54c78e35932bbbdbf3a13b55248ebf3">More...</a><br /></td></tr>
<tr class="separator:af54c78e35932bbbdbf3a13b55248ebf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fcdd100e22ead53fbd69b7e619fd14c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2fcdd100e22ead53fbd69b7e619fd14c"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a2fcdd100e22ead53fbd69b7e619fd14c">sensorInterpHandler</a> (void)</td></tr>
<tr class="memdesc:a2fcdd100e22ead53fbd69b7e619fd14c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal, for attaching to the robots sensor interp to read serial port. <br /></td></tr>
<tr class="separator:a2fcdd100e22ead53fbd69b7e619fd14c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f4b03e9d9e99581b1000d8258c6a1be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f4b03e9d9e99581b1000d8258c6a1be"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a5f4b03e9d9e99581b1000d8258c6a1be">setAutoFocus</a> (bool af=true)</td></tr>
<tr class="memdesc:a5f4b03e9d9e99581b1000d8258c6a1be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable/enable autofocus mode if possible. Return false if can't change autofocus mode. <br /></td></tr>
<tr class="separator:a5f4b03e9d9e99581b1000d8258c6a1be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac66ea3fad07e4f1a06e6a482059e2c96"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ac66ea3fad07e4f1a06e6a482059e2c96">setAuxPort</a> (int auxPort)</td></tr>
<tr class="memdesc:ac66ea3fad07e4f1a06e6a482059e2c96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the aux port on the robot to be used to communicate with this device.  <a href="#ac66ea3fad07e4f1a06e6a482059e2c96">More...</a><br /></td></tr>
<tr class="separator:ac66ea3fad07e4f1a06e6a482059e2c96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2e1b00edab294cdacf1d05d1a75bf5b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ac2e1b00edab294cdacf1d05d1a75bf5b">setDeviceConnection</a> (<a class="el" href="classArDeviceConnection.html">ArDeviceConnection</a> *connection, bool driveFromRobotLoop=true)</td></tr>
<tr class="memdesc:ac2e1b00edab294cdacf1d05d1a75bf5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the device connection to be used by this PTZ camera, if set this camera will send commands via this connection, otherwise its via robot aux.  <a href="#ac2e1b00edab294cdacf1d05d1a75bf5b">More...</a><br /></td></tr>
<tr class="separator:ac2e1b00edab294cdacf1d05d1a75bf5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc46ed669fc193d5eca5c4716d93fb26"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#acc46ed669fc193d5eca5c4716d93fb26">setFocus</a> (double focus) const </td></tr>
<tr class="memdesc:acc46ed669fc193d5eca5c4716d93fb26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set focus on camera, range of 1-100.  <a href="#acc46ed669fc193d5eca5c4716d93fb26">More...</a><br /></td></tr>
<tr class="separator:acc46ed669fc193d5eca5c4716d93fb26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37c0f3fcea79f9979894d25a339953ac"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a37c0f3fcea79f9979894d25a339953ac">setGain</a> (double gain) const </td></tr>
<tr class="memdesc:a37c0f3fcea79f9979894d25a339953ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set gain on camera, range of 1-100.  <a href="#a37c0f3fcea79f9979894d25a339953ac">More...</a><br /></td></tr>
<tr class="separator:a37c0f3fcea79f9979894d25a339953ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd0092aeb13d29dc4900818c5d819809"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd0092aeb13d29dc4900818c5d819809"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#acd0092aeb13d29dc4900818c5d819809">setInverted</a> (bool inv)</td></tr>
<tr class="memdesc:acd0092aeb13d29dc4900818c5d819809"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set whether the camera is inverted (upside down). If true, pan and tilt axes will be reversed. <br /></td></tr>
<tr class="separator:acd0092aeb13d29dc4900818c5d819809"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ca6ce6f3808a6cf2c01f55c4edb975b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a2ca6ce6f3808a6cf2c01f55c4edb975b">setPanSpeed</a> (double s)</td></tr>
<tr class="memdesc:a2ca6ce6f3808a6cf2c01f55c4edb975b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set pan slew rate (speed) (degrees/sec) if device supports it (see <a class="el" href="classArPTZ.html#a03c8f1ea4c5b669613a40db7b68d9a3e" title="Can pan and tilt speed (slew rates) be set to move device? ">canPanTiltSlew()</a>)  <a href="#a2ca6ce6f3808a6cf2c01f55c4edb975b">More...</a><br /></td></tr>
<tr class="separator:a2ca6ce6f3808a6cf2c01f55c4edb975b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2dd6d9bafa2b26f8ee482be2b49a5783"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2dd6d9bafa2b26f8ee482be2b49a5783"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a2dd6d9bafa2b26f8ee482be2b49a5783">setRobot</a> (<a class="el" href="classArRobot.html">ArRobot</a> *r)</td></tr>
<tr class="memdesc:a2dd6d9bafa2b26f8ee482be2b49a5783"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> object this PTZ is associated with. May be NULL. <br /></td></tr>
<tr class="separator:a2dd6d9bafa2b26f8ee482be2b49a5783"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ad63f6a50f4be8fc4cbf58e77373301"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a4ad63f6a50f4be8fc4cbf58e77373301">setTiltSpeed</a> (double s)</td></tr>
<tr class="memdesc:a4ad63f6a50f4be8fc4cbf58e77373301"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set tilt slew rate (speed) (degrees/sec) if device supports it (see <a class="el" href="classArPTZ.html#a03c8f1ea4c5b669613a40db7b68d9a3e" title="Can pan and tilt speed (slew rates) be set to move device? ">canPanTiltSlew()</a>)  <a href="#a4ad63f6a50f4be8fc4cbf58e77373301">More...</a><br /></td></tr>
<tr class="separator:a4ad63f6a50f4be8fc4cbf58e77373301"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a924db75e9b7739125ea6ca9cc1dae9a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a924db75e9b7739125ea6ca9cc1dae9a3"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a924db75e9b7739125ea6ca9cc1dae9a3">tilt</a> (double degrees)</td></tr>
<tr class="memdesc:a924db75e9b7739125ea6ca9cc1dae9a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tilts to the given degrees. 0 is middle, - is downward, + is upwards. <br /></td></tr>
<tr class="separator:a924db75e9b7739125ea6ca9cc1dae9a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8261c5ce26e3b38fec76268508529d92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8261c5ce26e3b38fec76268508529d92"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a8261c5ce26e3b38fec76268508529d92">tiltRel</a> (double degrees)</td></tr>
<tr class="memdesc:a8261c5ce26e3b38fec76268508529d92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tilts relative to the current position by given degrees. <br /></td></tr>
<tr class="separator:a8261c5ce26e3b38fec76268508529d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17b926dacaebd7ecf7050549debf4e49"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17b926dacaebd7ecf7050549debf4e49"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a17b926dacaebd7ecf7050549debf4e49">tiltSlew</a> (double s)</td></tr>
<tr class="memdesc:a17b926dacaebd7ecf7050549debf4e49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set tilt slew rate (speed) (degrees/sec) if device supports it (see <a class="el" href="classArPTZ.html#a03c8f1ea4c5b669613a40db7b68d9a3e" title="Can pan and tilt speed (slew rates) be set to move device? ">canPanTiltSlew()</a>) <br /></td></tr>
<tr class="separator:a17b926dacaebd7ecf7050549debf4e49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6253215273db093527abe6d517b9f95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6253215273db093527abe6d517b9f95"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ac6253215273db093527abe6d517b9f95">zoom</a> (int zoomValue)</td></tr>
<tr class="memdesc:ac6253215273db093527abe6d517b9f95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zooms to the given value. <br /></td></tr>
<tr class="separator:ac6253215273db093527abe6d517b9f95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add57c9d4bcd50226e130aabf3ce6dfec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add57c9d4bcd50226e130aabf3ce6dfec"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#add57c9d4bcd50226e130aabf3ce6dfec">zoomRel</a> (int zoomValue)</td></tr>
<tr class="memdesc:add57c9d4bcd50226e130aabf3ce6dfec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zooms relative to the current value, by the given value. <br /></td></tr>
<tr class="separator:add57c9d4bcd50226e130aabf3ce6dfec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac385d830dd56f2fefc0d2c2739b943da"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac385d830dd56f2fefc0d2c2739b943da"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ac385d830dd56f2fefc0d2c2739b943da">~ArPTZ</a> ()</td></tr>
<tr class="memdesc:ac385d830dd56f2fefc0d2c2739b943da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ac385d830dd56f2fefc0d2c2739b943da"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:af636ce588e4385b3dc7263f7fd7fad44"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#af636ce588e4385b3dc7263f7fd7fad44">setLimits</a> (double maxPosPan, double maxNegPan, double maxPosTilt, double maxNegTilt, int maxZoom=0, int minZoom=0)</td></tr>
<tr class="memdesc:af636ce588e4385b3dc7263f7fd7fad44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subclasses call this to set extents (limits) returned by <a class="el" href="classArPTZ.html#a1f3c4f0c3f0950c892e605ffec34bc86" title="Gets the highest positive degree the camera can pan to (inverted if camera is inverted) ...">getMaxPosPan()</a>, <a class="el" href="classArPTZ.html#a4dcefee2f9373bc949e9e205fbc7a505" title="Gets the lowest negative degree the camera can pan to (inverted if camera is inverted) ...">getMaxNegPan()</a>, <a class="el" href="classArPTZ.html#adf6fb70e256999e62aa5c001f4a59596" title="Gets the highest positive degree the camera can tilt to (inverted if camera is inverted) ...">getMaxPosTilt()</a>, <a class="el" href="classArPTZ.html#a389a3eb3ea39bd8f3cc706afb6e576d3" title="Gets the lowest negative degree the camera can tilt to (inverted if camera is inverted) ...">getMaxNegTilt()</a>, <a class="el" href="classArPTZ.html#adbe4dd5593dc638005a7c0dfbdd5de37" title="Gets the maximum value for the zoom on this camera. ">getMaxZoom()</a>, and <a class="el" href="classArPTZ.html#ae89a0e1f2458e59625c4849944b0c8ca" title="Gets the lowest value for the zoom on this camera. ">getMinZoom()</a>.  <a href="#af636ce588e4385b3dc7263f7fd7fad44">More...</a><br /></td></tr>
<tr class="separator:af636ce588e4385b3dc7263f7fd7fad44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a9b81bc7ca8197caece2e8ee67b4ec374"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#a9b81bc7ca8197caece2e8ee67b4ec374">getMaxPosPan_i</a> (void) const </td></tr>
<tr class="memdesc:a9b81bc7ca8197caece2e8ee67b4ec374"><td class="mdescLeft">&#160;</td><td class="mdescRight">Versions of the pan and tilt limit accessors where inversion is not applied, for use by subclasses to check when given pan/tilt commands.  <a href="#a9b81bc7ca8197caece2e8ee67b4ec374">More...</a><br /></td></tr>
<tr class="separator:a9b81bc7ca8197caece2e8ee67b4ec374"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67a019a3f940263363d91e9939cb7768"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67a019a3f940263363d91e9939cb7768"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>getMaxPan_i</b> () const </td></tr>
<tr class="separator:a67a019a3f940263363d91e9939cb7768"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6879d3555c5cd0011a6cb0d8ce66416d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6879d3555c5cd0011a6cb0d8ce66416d"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><b>getMaxPosTilt_i</b> (void) const </td></tr>
<tr class="separator:a6879d3555c5cd0011a6cb0d8ce66416d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80dc08273250f9cd27142105c136cad6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80dc08273250f9cd27142105c136cad6"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>getMinPan_i</b> () const </td></tr>
<tr class="separator:a80dc08273250f9cd27142105c136cad6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb70293df5458486ae6ca59308cbf351"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb70293df5458486ae6ca59308cbf351"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><b>getMaxNegPan_i</b> (void) const </td></tr>
<tr class="separator:acb70293df5458486ae6ca59308cbf351"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b8d55542b21929eabd3dd65a400dce9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b8d55542b21929eabd3dd65a400dce9"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>getMaxTilt_i</b> () const </td></tr>
<tr class="separator:a0b8d55542b21929eabd3dd65a400dce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa54f41c28b7cfc006348ba097ae0e339"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa54f41c28b7cfc006348ba097ae0e339"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><b>getMaxNegTilt_i</b> (void) const </td></tr>
<tr class="separator:aa54f41c28b7cfc006348ba097ae0e339"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6bbcd46ef3915b29543a9206d1e137d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad6bbcd46ef3915b29543a9206d1e137d"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>getMinTilt_i</b> () const </td></tr>
<tr class="separator:ad6bbcd46ef3915b29543a9206d1e137d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:ab8b8318926cbfa578996f1714f040184"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classArPTZ.html#ab8b8318926cbfa578996f1714f040184">pan_i</a> (double degrees)=0</td></tr>
<tr class="memdesc:ab8b8318926cbfa578996f1714f040184"><td class="mdescLeft">&#160;</td><td class="mdescRight">Internal implementations by subclasses.  <a href="#ab8b8318926cbfa578996f1714f040184">More...</a><br /></td></tr>
<tr class="separator:ab8b8318926cbfa578996f1714f040184"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e4b02e92fa2fb2b4b1d7f8e6ed7b507"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e4b02e92fa2fb2b4b1d7f8e6ed7b507"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>panRel_i</b> (double degrees)=0</td></tr>
<tr class="separator:a7e4b02e92fa2fb2b4b1d7f8e6ed7b507"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a602c89a0c1a9d16ad8fc9e6e3e73c0c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a602c89a0c1a9d16ad8fc9e6e3e73c0c3"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>tilt_i</b> (double degrees)=0</td></tr>
<tr class="separator:a602c89a0c1a9d16ad8fc9e6e3e73c0c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24142c5c14030d8debeb8930f447e6f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24142c5c14030d8debeb8930f447e6f7"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>tiltRel_i</b> (double degrees)=0</td></tr>
<tr class="separator:a24142c5c14030d8debeb8930f447e6f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2392ef94be06a7cf7823baca21964d50"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2392ef94be06a7cf7823baca21964d50"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>panTilt_i</b> (double degreesPan, double degreesTilt)=0</td></tr>
<tr class="separator:a2392ef94be06a7cf7823baca21964d50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c957e4a4d9b59d56624223608170995"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c957e4a4d9b59d56624223608170995"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>panTiltRel_i</b> (double degreesPan, double degreesTilt)=0</td></tr>
<tr class="separator:a0c957e4a4d9b59d56624223608170995"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aead6f4ac84fdb023304c327179bbfe69"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aead6f4ac84fdb023304c327179bbfe69"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><b>getPan_i</b> (void) const =0</td></tr>
<tr class="separator:aead6f4ac84fdb023304c327179bbfe69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade73ad4aec6ef18b73c3a8cc51cff005"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade73ad4aec6ef18b73c3a8cc51cff005"></a>
virtual double&#160;</td><td class="memItemRight" valign="bottom"><b>getTilt_i</b> (void) const =0</td></tr>
<tr class="separator:ade73ad4aec6ef18b73c3a8cc51cff005"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a9db0c3b403736cf4f1381c8f5248d19e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9db0c3b403736cf4f1381c8f5248d19e"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myAuxPort</b></td></tr>
<tr class="separator:a9db0c3b403736cf4f1381c8f5248d19e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a889797b920f994e0162b8be72d8521"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a889797b920f994e0162b8be72d8521"></a>
<a class="el" href="classArCommands.html#a9a31f904a95bbc31d8b33c6637100cc4">ArCommands::Commands</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myAuxRxCmd</b></td></tr>
<tr class="separator:a8a889797b920f994e0162b8be72d8521"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8ad18692580627ca4de8dfcfcd6dfd5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa8ad18692580627ca4de8dfcfcd6dfd5"></a>
<a class="el" href="classArCommands.html#a9a31f904a95bbc31d8b33c6637100cc4">ArCommands::Commands</a>&#160;</td><td class="memItemRight" valign="bottom"><b>myAuxTxCmd</b></td></tr>
<tr class="separator:aa8ad18692580627ca4de8dfcfcd6dfd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ac29268be68c8682002c7a90d0934ec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ac29268be68c8682002c7a90d0934ec"></a>
<a class="el" href="classArDeviceConnection.html">ArDeviceConnection</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myConn</b></td></tr>
<tr class="separator:a6ac29268be68c8682002c7a90d0934ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a766a535350f1d7bf4d5c8c6e06a91d30"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a766a535350f1d7bf4d5c8c6e06a91d30"></a>
<a class="el" href="classArFunctorC.html">ArFunctorC</a>&lt; <a class="el" href="classArPTZ.html">ArPTZ</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myConnectCB</b></td></tr>
<tr class="separator:a766a535350f1d7bf4d5c8c6e06a91d30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3e5197ca2051611765c709d95450007"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3e5197ca2051611765c709d95450007"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>myInverted</b></td></tr>
<tr class="separator:ac3e5197ca2051611765c709d95450007"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8ee1b3c7e67889bf2b10542aee46d47"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8ee1b3c7e67889bf2b10542aee46d47"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>myMaxNegPan</b></td></tr>
<tr class="separator:ad8ee1b3c7e67889bf2b10542aee46d47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c1613bbd85327eb419372da6414b236"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c1613bbd85327eb419372da6414b236"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>myMaxNegTilt</b></td></tr>
<tr class="separator:a4c1613bbd85327eb419372da6414b236"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e8421240aaa6d8018c10c33c9f0ff93"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e8421240aaa6d8018c10c33c9f0ff93"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>myMaxPosPan</b></td></tr>
<tr class="separator:a6e8421240aaa6d8018c10c33c9f0ff93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad77f686b2b773b796519395340322bde"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad77f686b2b773b796519395340322bde"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>myMaxPosTilt</b></td></tr>
<tr class="separator:ad77f686b2b773b796519395340322bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe96a9ae77b3f95fa7bc52256e3b9246"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe96a9ae77b3f95fa7bc52256e3b9246"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myMaxZoom</b></td></tr>
<tr class="separator:abe96a9ae77b3f95fa7bc52256e3b9246"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac791d499f3e35fd042e278967e9ef0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac791d499f3e35fd042e278967e9ef0e"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>myMinZoom</b></td></tr>
<tr class="separator:aac791d499f3e35fd042e278967e9ef0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa57a07b1335421b0ba422ec602293ec6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa57a07b1335421b0ba422ec602293ec6"></a>
<a class="el" href="classArRobot.html">ArRobot</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>myRobot</b></td></tr>
<tr class="separator:aa57a07b1335421b0ba422ec602293ec6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a127fd505e44da378c524131c70118a89"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a127fd505e44da378c524131c70118a89"></a>
<a class="el" href="classArRetFunctor1C.html">ArRetFunctor1C</a>&lt; bool, <a class="el" href="classArPTZ.html">ArPTZ</a>, <a class="el" href="classArRobotPacket.html">ArRobotPacket</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>myRobotPacketHandlerCB</b></td></tr>
<tr class="separator:a127fd505e44da378c524131c70118a89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1564e54d51b82c1dd7a779a2397faf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1564e54d51b82c1dd7a779a2397faf8"></a>
<a class="el" href="classArFunctorC.html">ArFunctorC</a>&lt; <a class="el" href="classArPTZ.html">ArPTZ</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>mySensorInterpCB</b></td></tr>
<tr class="separator:af1564e54d51b82c1dd7a779a2397faf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Base class which handles the PTZ cameras. </p>
<p>This class is mainly concerned with making all the cameras look the same for outgoing data, it is also set up to facilitate the acquisition of incoming data but that is described in the following paragraphs. There are two ways this can be used. The first is the simplest and default behavior and should be used by those whose cameras are attached to their robot's microcontroller, a <a class="el" href="classArRobot.html" title="Central class for communicating with and operating the robot. ">ArRobot</a> pointer is passed in to the contructor, this is where the commands will be sent to the robot via the robot's connection which will then send it along over the second serial port. The second way is to pass an <a class="el" href="classArDeviceConnection.html" title="Base class for device connections. ">ArDeviceConnection</a> to setDeviceConnection, if this is done commands will be sent along the given serial port, this should ONLY be done if the camera is attached straight to a serial port on the computer this program is running on.</p>
<p>The next two paragraphs describe how to get data back from the cameras, but this base class is set up so that by default it won't try to get data back and assumes you're not trying to do that. If you are trying to get data back the important functions are packetHandler, robotPacketHandler and readPacket and you should read the docs on those.</p>
<p>If the camera is attached to the robot (and you are thus using the first method described in the first paragraph) then the only way to get data back is to send an <a class="el" href="classArCommands.html#a9a31f904a95bbc31d8b33c6637100cc4a10e72ab2eec33fe56d8db1042c462e93" title="int, requests 1-200 bytes from aux1 serial channel, 0 flush ">ArCommands::GETAUX</a>, then set up a robotPacketHandler for the AUX id and have it call the packetHandler you set up in in the class.</p>
<p>If the camera is attached to the serial port on the computer (and thus the second method described in the first paragraph was used) then its more complicated... the default way is to just pass in an <a class="el" href="classArDeviceConnection.html" title="Base class for device connections. ">ArDeviceConnection</a> to setDeviceConnection and implement the readPacket method (which MUST not block), and every time through the robot loop readPacket (with the sensorInterpHandler) will be called and any packets will be given to the packetHandler (which you need to implement in your class) to be processed. The other way to do this method is to pass both an ArDefaultConnection and false to setDeviceConnection, this means the camera will not be read at all by default, and you're on your own for reading the data in (ie like your own thread).</p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="cameraPTZExample_8cpp-example.html#_a18">cameraPTZExample.cpp</a>.</dd>
</dl></div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a6cf3bdfcadf28cd9f2bbf90d8139ab55"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ArPTZ::ArPTZ </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArRobot.html">ArRobot</a> *&#160;</td>
          <td class="paramname"><em>robot</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">robot</td><td>The robot this camera is attached to, can be NULL </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a47b5b46bcd96a1e353e975823ee699cf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArPTZ::canSetSpeed </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Can pan and tilt speed (slew rates) be set to move device? </p>

</div>
</div>
<a class="anchor" id="a470a9501a6b9aa9a984f58dab7481449"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArPTZ::getMaxPan </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets the highest positive degree the camera can pan to (inverted if camera is inverted) </p>

</div>
</div>
<a class="anchor" id="a9b81bc7ca8197caece2e8ee67b4ec374"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual double ArPTZ::getMaxPosPan_i </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Versions of the pan and tilt limit accessors where inversion is not applied, for use by subclasses to check when given pan/tilt commands. </p>

</div>
</div>
<a class="anchor" id="a23a54d4c5334f7dfde331e91e389f093"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArPTZ::getMaxTilt </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets the highest positive degree the camera can tilt to (inverted if camera is inverted) </p>

</div>
</div>
<a class="anchor" id="af5e9a1c0a7e31c002c40440475997250"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArPTZ::getMinPan </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets the lowest negative degree the camera can pan to (inverted if camera is inverted) </p>

</div>
</div>
<a class="anchor" id="ad3158b7894920926b3cbaf2e89d62d82"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ArPTZ::getMinTilt </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Gets the lowest negative degree the camera can tilt to (inverted if camera is inverted) </p>

</div>
</div>
<a class="anchor" id="a9d76370937c1cb2170e7a07a0157d949"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual double ArPTZ::getPan </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The angle the camera is panned to (or last commanded value sent, if unable to obtain real pan position) </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArPTZ.html#a9dc961e4c30c2bb0416738aeadbe91f5" title="Whether getPan() hand getTilt() return the device&#39;s real position, or last commanded position...">canGetRealPanTilt()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="cameraPTZExample_8cpp-example.html#a22">cameraPTZExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ae9f4ff90958537f6bdc095e9ed12ebe6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual double ArPTZ::getTilt </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The angle the camera is tilted to (or last commanded value sent, if unable to obtain real pan position) </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArPTZ.html#a9dc961e4c30c2bb0416738aeadbe91f5" title="Whether getPan() hand getTilt() return the device&#39;s real position, or last commanded position...">canGetRealPanTilt()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="cameraPTZExample_8cpp-example.html#a25">cameraPTZExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a3fa77b2691a7cd7ae9f823ba9271a33a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int ArPTZ::getZoom </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The amount the camera is zoomed to (or last commanded value sent, if unable to obtain real pan position) </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classArPTZ.html#a26898283fecc9536d90b819fc751d410" title="Returns true if camera can zoom and this class can control the zoom amount. ">canZoom()</a>; </dd>
<dd>
canGetZoom() </dd></dl>

</div>
</div>
<a class="anchor" id="a5080255e0f228a996b264c2c6e01906f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ArPTZ::packetHandler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArBasePacket.html">ArBasePacket</a> *&#160;</td>
          <td class="paramname"><em>packet</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Handles a packet that was read from the device. </p>
<p>This should work for the robot packet handler or for packets read in from readPacket (the joys of OO), but it can't deal with the need to check the id on robot packets, so you should check the id from robotPacketHandler and then call this one so that your stuff can be used by both robot and serial port connections. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">packet</td><td>the packet to handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if this packet was handled (ie this knows what it is), false otherwise </dd></dl>

</div>
</div>
<a class="anchor" id="ab8b8318926cbfa578996f1714f040184"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ArPTZ::pan_i </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>degrees</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Internal implementations by subclasses. </p>
<p>Inverted is not applied in these functions, it is done in the public interface above. Note, once execution enters one of these _i methods, then inversion has been applied and no call should be made to any pan/tilt or max/min limit accessor method that does not end in _i, or inversion will be applied again, reversing it. </p><dl class="section since"><dt>Since</dt><dd>2.7.6 </dd></dl>

</div>
</div>
<a class="anchor" id="aa8060077b590db3d0f129143798ec953"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classArBasePacket.html">ArBasePacket</a>* ArPTZ::readPacket </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Reads a packet from the device connection, MUST NOT BLOCK. </p>
<p>This should read in a packet from the myConn connection and return a pointer to a packet if there was on to read in, or NULL if there wasn't one... this MUST not block if it is used with the default mode of being driven from the sensorInterpHandler, since that is on the robot loop. </p><dl class="section return"><dt>Returns</dt><dd>packet read in, or NULL if there was no packet read </dd></dl>

</div>
</div>
<a class="anchor" id="a5b4a5e0245ea974434fac47e07b32be8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ArPTZ::reset </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Resets the camera. </p>
<p>This function will reset the camera to 0 0 pan tilt, and 0 zoom, on some cameras that can get out of sync it may need to do more, such as call init on it again. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="cameraPTZExample_8cpp-example.html#a26">cameraPTZExample.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="aaa03afae5d2ce2928d8be9e093cf444a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArPTZ::robotPacketHandler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArRobotPacket.html">ArRobotPacket</a> *&#160;</td>
          <td class="paramname"><em>packet</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Handles a packet that was read by the robot. </p>
<p>This handles packets read in from the robot, this function should just check the ID of the robot packet and then return what packetHandler thinks of the packet. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">packet</td><td>the packet to handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the packet was handled (ie this konws what it is), false otherwise </dd></dl>

</div>
</div>
<a class="anchor" id="af54c78e35932bbbdbf3a13b55248ebf3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArPTZ::sendPacket </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArBasePacket.html">ArBasePacket</a> *&#160;</td>
          <td class="paramname"><em>packet</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sends a given packet to the camera (via robot or serial port, depending) </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">packet</td><td>the packet to send </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the packet could be sent, false otherwise </dd></dl>

</div>
</div>
<a class="anchor" id="ac66ea3fad07e4f1a06e6a482059e2c96"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArPTZ::setAuxPort </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>auxPort</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the aux port on the robot to be used to communicate with this device. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">auxPort</td><td>Which auxilliary serial port on the robot's microcontroller that the device is connected to. (The C166 controller only has one port; the H8 has two; the SH has three.)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if <em>auxPort</em> was valid (1, 2 or 3). False otherwise. If <em>auxPort</em> was an invalid number, the previous setting will be retained. </dd></dl>

</div>
</div>
<a class="anchor" id="ac2e1b00edab294cdacf1d05d1a75bf5b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArPTZ::setDeviceConnection </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArDeviceConnection.html">ArDeviceConnection</a> *&#160;</td>
          <td class="paramname"><em>connection</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>driveFromRobotLoop</em> = <code>true</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the device connection to be used by this PTZ camera, if set this camera will send commands via this connection, otherwise its via robot aux. </p>
<p>serial port (see setAuxPortt())</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">connection</td><td>the device connection the camera is connected to, normally a serial port</td></tr>
    <tr><td class="paramname">driveFromRobotLoop</td><td>if this is true then a sensor interp callback wil be set and that callback will read packets and call the packet handler on them</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the serial port is opened or can be opened, false otherwise </dd></dl>

</div>
</div>
<a class="anchor" id="acc46ed669fc193d5eca5c4716d93fb26"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ArPTZ::setFocus </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>focus</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set focus on camera, range of 1-100. </p>
<p>Returns false if out of range or if you can't set the focus on the camera </p>

</div>
</div>
<a class="anchor" id="a37c0f3fcea79f9979894d25a339953ac"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ArPTZ::setGain </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>gain</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set gain on camera, range of 1-100. </p>
<p>Returns false if out of range or if you can't set the gain on the camera </p>

</div>
</div>
<a class="anchor" id="af636ce588e4385b3dc7263f7fd7fad44"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ArPTZ::setLimits </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>maxPosPan</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>maxNegPan</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>maxPosTilt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>maxNegTilt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>maxZoom</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>minZoom</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Subclasses call this to set extents (limits) returned by <a class="el" href="classArPTZ.html#a1f3c4f0c3f0950c892e605ffec34bc86" title="Gets the highest positive degree the camera can pan to (inverted if camera is inverted) ...">getMaxPosPan()</a>, <a class="el" href="classArPTZ.html#a4dcefee2f9373bc949e9e205fbc7a505" title="Gets the lowest negative degree the camera can pan to (inverted if camera is inverted) ...">getMaxNegPan()</a>, <a class="el" href="classArPTZ.html#adf6fb70e256999e62aa5c001f4a59596" title="Gets the highest positive degree the camera can tilt to (inverted if camera is inverted) ...">getMaxPosTilt()</a>, <a class="el" href="classArPTZ.html#a389a3eb3ea39bd8f3cc706afb6e576d3" title="Gets the lowest negative degree the camera can tilt to (inverted if camera is inverted) ...">getMaxNegTilt()</a>, <a class="el" href="classArPTZ.html#adbe4dd5593dc638005a7c0dfbdd5de37" title="Gets the maximum value for the zoom on this camera. ">getMaxZoom()</a>, and <a class="el" href="classArPTZ.html#ae89a0e1f2458e59625c4849944b0c8ca" title="Gets the lowest value for the zoom on this camera. ">getMinZoom()</a>. </p>
<dl class="section since"><dt>Since</dt><dd>2.7.6 </dd></dl>

</div>
</div>
<a class="anchor" id="a2ca6ce6f3808a6cf2c01f55c4edb975b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArPTZ::setPanSpeed </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set pan slew rate (speed) (degrees/sec) if device supports it (see <a class="el" href="classArPTZ.html#a03c8f1ea4c5b669613a40db7b68d9a3e" title="Can pan and tilt speed (slew rates) be set to move device? ">canPanTiltSlew()</a>) </p>

</div>
</div>
<a class="anchor" id="a4ad63f6a50f4be8fc4cbf58e77373301"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ArPTZ::setTiltSpeed </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set tilt slew rate (speed) (degrees/sec) if device supports it (see <a class="el" href="classArPTZ.html#a03c8f1ea4c5b669613a40db7b68d9a3e" title="Can pan and tilt speed (slew rates) be set to move device? ">canPanTiltSlew()</a>) </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>ArPTZ.h</li>
<li>ArPTZ.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classArPTZ.html">ArPTZ</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
